﻿using Ortodoctor.gridComponent;
using Ortodoctor.modelo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Ortodoctor.Funcionario
{
    public partial class Procedimento : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["USUARIO"] == null)
                Response.Redirect("Login.aspx");

            modeloProcedimento model = new modeloProcedimento();
            Grid grid = new Grid(model.getAll(), "id_procedimento");
            Session["GRID_PROCEDIMENTO"] = grid;
        }

        [WebMethod]
        public static void insereProcedimento(string tipo, string procedimento, string promocao)
        {
            modeloProcedimento proc = new modeloProcedimento();
            int id = proc.insert(new Ortodoctor.Componentes.Procedimento(-1, tipo, procedimento, promocao));
            Grid grid = ((Grid)HttpContext.Current.Session["GRID_PROCEDIMENTO"]);
            grid.total++;
            grid.dados.Rows.Add(id, tipo, procedimento, promocao);            
        }

        [WebMethod]
        public static string getDados(string page, string rp, string sortname, string sortorder, string query, string qtype)
        {
            Grid grid = ((Grid)HttpContext.Current.Session["GRID_PROCEDIMENTO"]);
            grid.page = Convert.ToInt32(page);
            DataTable dt = grid.dados.Clone();

            if (string.IsNullOrEmpty(query))
            {
                int numeroItensPagina = Convert.ToInt32(rp);
                int numeroPagina = Convert.ToInt32(page);
                int inicio = numeroItensPagina * (numeroPagina - 1);

                for (int i = inicio; i < inicio + numeroItensPagina && i < grid.dados.Rows.Count; ++i)
                {
                    DataRow dr = dt.NewRow();
                    foreach (DataColumn dc in dt.Columns)
                        dr[dc.ColumnName] = grid.dados.Rows[i][dc.ColumnName];

                    dt.Rows.Add(dr);
                }
                if (dt.Rows.Count > 0)
                {
                    dt.DefaultView.Sort = sortname + " " + sortorder;
                    dt = dt.DefaultView.ToTable();
                }
            }
            else
            {
                dt = grid.dados.Copy();
                dt.DefaultView.RowFilter = string.Format("[{0}] like '%{1}%'", qtype, query);
                dt = dt.DefaultView.ToTable();
            }
            return grid.getDadosToJson(dt);
        }

        [WebMethod]
        public static string editTable(int id, string tipo, string procedimento, string promocao)
        {
            modeloProcedimento proc = new modeloProcedimento();
            proc.update(new Ortodoctor.Componentes.Procedimento(id, tipo, procedimento, promocao));
            Grid grid = ((Grid)HttpContext.Current.Session["GRID_PROCEDIMENTO"]);
            DataRow dr = grid.dados.Select("[id_procedimento]=" + id)[0];
            dr["tipo"] = tipo;
            dr["nome_procedimento"] = procedimento;
            dr["promocao"] = promocao; 
            return "editou";
        }

        [WebMethod]
        public static string deleteFromTable(int id)
        {
            Grid grid = ((Grid)HttpContext.Current.Session["GRID_PROCEDIMENTO"]);
            grid.deleteFromTable(id);
            modeloProcedimento proc = new modeloProcedimento();
            proc.delete(id);
            HttpContext.Current.Session["GRID_PROCEDIMENTO"] = grid;
            return "removeu";
        }

        [WebMethod]
        public static string getDataFromProc(int id)
        {
            modeloProcedimento proc = new modeloProcedimento();
            DataTable dt = proc.getProcedimento(id);
            return dt.Rows[0]["tipo"].ToString() + "|" + dt.Rows[0]["nome_procedimento"].ToString() + "|" + dt.Rows[0]["promocao"].ToString();
        }
    }
}